package com.eclipse.e20200128_java8.排序_Arrays_sort_Comparator_参数形式;

import java.util.Arrays;
import java.util.Comparator;


public class Test {
	public static void main(String[] args) {
		introduce();
	}
	
	static public void introduce() {
	    String[] strArray ={"a", "c", "b"};
	    //在学完lambda表达式后，如果你想创建一个Comparator实例，你可能会用以下方法：
	    
	    //这样传参数，需要自己定义一个类现实接口Comparator。	先比较长度，长度一样再用String类的compareTo方法比较内容，进行排序。
	    Arrays.sort(strArray, new CompareLength());
	    
//	    Arrays.sort(strArray, (s1,s2)->s1.compareTo(s2));
	    
	    for (String string : strArray) {
			System.out.println(string);
		}
	        
	    //你仔细看就会发现整个lambda体其实就只是在调用String类的compareTo()方法而已
	        
	    //因此我们可以使用方法引用的方式来进行简写
//	    Arrays.sort(strArray,String::compareTo);
	}
}


class CompareLength extends Object implements Comparator<String>{

	@Override
	//1.代表当前正在添加的对象
	//2.代表集合当中的对象
	public int compare(String o1, String o2) {
		int lenght = o1.length() - o2.length();   //主要是比长度
		return lenght == 0 ?  o1.compareTo(o2) : lenght;  //如果长度相等，再去比内容
	}
}


